﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Net.Mail;

public partial class cadastro: System.Web.UI.Page
{
    private CLIENTE Cliente_ = new CLIENTE();
    private CONTATO Contato = new CONTATO();
    private CONTATOS_CLIENTE ConCliente = new CONTATOS_CLIENTE();
    private dbSisInfoDataContext Banco = new dbSisInfoDataContext();
    private funcoes func = new funcoes();

    protected void Page_Load(object sender, EventArgs e)
    {
        Session["Titulo"] = "Meu cadastro";
        pnlInserir.Visible = true;
        txtNome.Focus();

    }

 
    private void InserirCliente()
   {


       // Verifica se existe outro cliente com o CPF já cadastrado
       var CPFCadastrado = from C in Banco.CLIENTEs
                           where C.CPFCNPJ.Equals(txtCPF.Text.Trim())
                           select C;

       List<CLIENTE> CliCPF = CPFCadastrado.ToList<CLIENTE>();

       if (CliCPF.Count > 0)
       {
           ScriptManager.RegisterStartupScript(Page, GetType(), "javascript", "alert('Já existe um cliente cadastrado com este CPF')", true);
           //btnIncluir_ModalPopupExtender.Show();
       }
       else
       {

           try
           {
               // Preenche os campos
               Cliente_.Nome = txtNome.Text;
               Cliente_.CPFCNPJ = txtCPF.Text;
               Cliente_.DataNascimento = Convert.ToDateTime(txtDataNascimento.Text);
               Cliente_.Ativo = false;

               var dadosuser = from U in Banco.aspnet_Users
                               where U.UserName == (CreateUserWizard1.UserName.ToString().Trim())
                               select U;

               Cliente_.UserId = (Guid)dadosuser.ToList<aspnet_User>()[0].UserId;

               // Salva Cliente
               Banco.CLIENTEs.InsertOnSubmit(Cliente_);
               Banco.SubmitChanges();

               // Captura idCliente
               var vCliente = (from C in Banco.CLIENTEs
                               select C.idCliente).Max();

               // Preenche contato
               Contato.Email1 = CreateUserWizard1.Email.ToString().Trim();

               // Salva contato
               Banco.CONTATOs.InsertOnSubmit(Contato);
               Banco.SubmitChanges();

               // Captura contato
               var vContato = (from C in Banco.CONTATOs
                               select C.idContato).Max();

               // Relaciona contato ao cliente

               ConCliente.idCliente = (Int32)vCliente;
               ConCliente.idContato = (Int32)vContato;
               ConCliente.idUsuarioCriador = 2;
               ConCliente.DataCriacao = DateTime.Now;
               ConCliente.Ativo = true;

               Banco.CONTATOS_CLIENTEs.InsertOnSubmit(ConCliente);
               Banco.SubmitChanges();

               // Enviar email
              // litMsg.Text = func.EnviarEmail("janynne@univale.br", "Sis-CLiente", "", CreateUserWizard1.Email.ToString().Trim(), new MailAddress[0], "SIS-CLIENTE - CONFIRMAÇÃO DE CADASTRO", CorpoEmail());
//
               // Mostrar mensagem
              /* litMsg.Text += "<br/> Bem vindo " + txtNome.Text + "! <br/>" +
                             " Você já está cadastrado, mas para fazer alguma solicitação, é necessário confirmar o cadastro atraves do link enviado ao e-mail que você cadastrou. " +
                             " <br/><br/> :)";*/

           }
           catch
        {
            if (!string.IsNullOrEmpty(CreateUserWizard1.UserName))
            {
              Membership.DeleteUser(CreateUserWizard1.UserName);
            }
            else
            {
                CreateUserWizard1.ActiveStepIndex = 2;
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "script", "alert('Ocorreu um erro na criação do usuário! Tente novamente.'); window.location=\"CadParticipante.aspx\"", true);
            }           
        }

           finally
           {
               pnlInserir.Visible = false;
              // pnlConfirmacaoCadastro.Visible = true;
           }
       }
   }
   
    private string CorpoEmail()
    { 
            
        return     " <table style=\"border: 1px solid #C0C0C0; background-color: #F4F4F4; font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #666666;\""+
                    "        width=\"600px\">"+
                    "        <tr>"+
                    "            <td align=\"center\">"+
                    "                Olá "+
                    "            </td> "+
                    "        </tr>"+
                    "        <tr>"+
                    "            <td>"+
                    "                Você se cadastrou em nosso Portal."+
                    "                <br />"+
                    "                Clique aqui para ativar seu cadastro.</td>"+
                    "        </tr>"+
                    "        <tr>"+
                    "            <td>"+
                    "                Todos os direitos Reservados</td>"+
                    "        </tr>"+
                    "    </table>";
    
    }
  
 
   
    protected void CreateUserWizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    { 
       
        try
         {
             InserirCliente();
         }
         catch { e.Cancel = true; }
      
    }
    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {
        string[] strUsuario = new string[1];
        strUsuario[0] = CreateUserWizard1.UserName.ToString();
        Roles.AddUsersToRole(strUsuario, "cliente");
    }
    
}
